package com.yupi.springbootinit.statemachine.annotation;

import java.lang.annotation.*;

/**
 * 部门权限验证注解
 * 用于标记需要特定部门权限的方法
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequireDepartment {
    
    /**
     * 允许访问的部门ID数组
     * 如果为空，则表示所有部门都可以访问
     */
    long[] departmentIds() default {};
    
    /**
     * 允许访问的部门名称数组（用于可读性）
     * 实际验证仍使用departmentIds
     */
    String[] departmentNames() default {};
    
    /**
     * 是否允许管理员访问
     * 默认为true，管理员拥有所有权限
     */
    boolean allowAdmin() default true;
    
    /**
     * 权限验证失败时的错误消息
     */
    String message() default "部门权限不足，无法访问此功能";
    
    /**
     * 是否记录权限验证日志
     */
    boolean logAccess() default true;
}